<!DOCTYPE html>
<html lang="zh-CN">
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<!-- 上述3个meta标签*必须*放在最前面，任何其他内容都*必须*跟随其后！ -->
	<title>JavaScript高级程序设计（第3版）</title>

	<!-- Bootstrap -->
	<link href="../css/bootstrap.min.css" rel="stylesheet">

	<style>
		article{
			background: -moz-linear-gradient(top, #fb0, #f50);
		}
	</style>
	<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
	<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
	<!--[if lt IE 9]>
	<script src="http://cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>
	<script src="http://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
	<![endif]-->
</head>
<body>
<article>
	<header><h1>第1章 JavaScript简介</h1></header>
	<p>JavaScript和ECMAScript通常被人们用来表达相同的含义，但前者含义要比ECMA-262中规定的（实现JavaScript的设计标准，由ECMA-欧洲计算机制造商协会提出）多得多。一个完整的JavaScript由三部分组成：核心ECMAScript，DOM和BOM浏览器对象模型。</p>
	<p>ECMA-262标准定义了语法、数据类型、语句、关键字、保留字、操作符和对象。</p>
	<p>DOM是针对XML经过扩展用于HTML的应用程序编程接口。DOM分为三个级别：DOM1由两个模块组成：DOM核心（定义如何映射基于XML的文档结构，以简化对文档中任意部分的访问和操作）和DOM HTML（在DOM核心的基础上加以扩展，回添了针对HTML的对象和方法）。DOM2级引入了下列新模块：DOM视图，定义跟踪不同文档视图的接口；DOM事件，定义事件和事件处理的接品；DOM样式，定义基于CSS为元素应用样式的接口；DOM遍历和范围，定义遍历和操作文档树的接口。DOM3级则则一步扩展了DOM，引入了统一方式加载和保存文档的方法以及验证文档的方法。DOM3级也对DOM核心进行了扩展。</p>
	<p>BOM可以用来控制浏览器显示的页面以外的部分，比如：弹出新浏览器窗品的功能；移动、缩放和关闭浏览器窗口的功能；提供浏览器详细信息的navigator对象；提供浏览器所加载详细页面的location对象；提供用户显示器分辨率详细信息的screen对象；对cookies的支持；像XMLHttpRequest这样的自定义对象。</p>
	<p>Moziila开发团能的构建目标是建立与标准100%兼容的浏览器。尽管浏览器都实现了某些众所周知的共同特性，但其他特性还是因浏览器而异。</p>
</article>
<article>
	<header><h1>第2章 在HTML中使用JavaScript</h1></header>
	<p>script元素有几个属性：async表示立即下载脚本，但不妨碍页面中的其他操作，只对外部脚本有效，没什么用，这样可能产生多个外部脚本下载完成时间不同，它也就不再按脚本文件嵌入的顺序执行了。defer表示脚本可以延迟到文档完成解析和显示后再执行，也只对外部脚本有效。如果存在两个相互依赖的脚本就defer属性就比较重要了。</p>
	<p>注意，使用类似于&lt;script src="xxx.js" /&gt;这样的标记可能在有些浏览器中不能正确解析，尤其是IE。另外，js的扩展名也不是必须的，如果不使用js扩展名，需要确保服务器能返回正确的MIME类型。</p>
	<p>现在的通用做法是将script标记放在body元素显示内容的后面，在body的最底端，以免下载过大的脚本影响网页显示速度。</p>
	<p>尽量不要在HTML中直接写入脚本，应当使用外部文件包含。这样有三个优点：可维护，可缓存（避免二次下载），适应未来。</p>
	<p>可以在body元素内加入noscript子元素，提醒用户启用JavaScript支持，支持JavaScript的浏览器是不会显示noscript标记的内容的。</p>
</article>
<article>
	<header><h1>第3章 基本概念</h1></header>
	<p>JavaScript标识符的第一个字符必须是字母、下划线_或一个美元符号$，后面的内容可以使用数字。一般采用驼峰命名法，因为它是面向对象的。注释风格和C++一致。可以在代码顶部加入一行："use strict";，让浏览器采用严格模式解析，使代码严格遵守ECMAScript3的语法，严格模式下JavaScript的执行结果会有很大不同。虽然可以省略行末的分号，但最好不要这样做。</p>
	<p>JavaScript的变量可以保存任何类型的数据。JavaScript有函数作用域，但没有块级作用域。如果在函数中不用var声明变量，那么它就是全局变量，在函数外也是可见的，否则将在函数执行完后被销毁，尽量用var定义变量。</p>
	<p>JavaScript有五种简单变量类型：Undefined,Null（表示一个空对象指针，如果定义的变量准备用来保存对象，可以将它初始化为null）,Boolean,Number,String和一种复杂数据类型Object，它本质上是由一组无序的名值对组成的。</p>
	<p>使用typeof操作符可以返回变量类型，如果变量没有定义或虽已经定义但没有赋值则返回undefined。注意typeof null；会返回object，因为null被定义为空的对象引用。而函数则会返回function，虽然函数不是数据类型。</p>
	<p>undefined是派生于null的，因此undefined==null会返回true，但undefined===null会返回false。</p>
	<p>JavaScript的类型强制转换是使用类型标识符加括号完成，比如：Boolean(message);。注意大小写，而它的布尔值只能用全小写的true和false，任何大小写组合都不行，而且true并不一定等于1，false也不一定等于0（对string来说，空字符串‘’为false，对数值来说0或NaN是false任何非零数值包括无穷大都是true，Object则是null为false任何对象都是true。虽然JavaScript会进行自动类型转换，但是尽量不要使用。比如:var messgae='hello'; if(messgage){里面的语句会被执行}。</p>
	<p>注意，八进制字面量在严格模式下是无效的。JavaScript存在+0和-0两种，但它们是相等的。<strong>注意，不要对浮点数进行比较，因为JavaScript的浮点计算会产生舍入误差。</strong>超出JavaScript保存范围的数值将被替换为Infinity或-Infinity（正或负无穷)。</p>
	<p>NaN表示用于表示一个本来要返回数值的操作数未返回数值的情况，比如：1/0，JavaScripot对这样的算式不会抛出异常，而是返回NaN。任何涉及NaN的操作都会返回NaN，NaN和任何值都不相等，包括它本身。NaN==NaN的结果为false。可以用函数isNaN()来判断一个表达式的值是否是一个数值。</p>
	<p>如果需要将字符串转换为整数，尽量使用parseInt()函数而不是用Number()函数。转换小数使用parseFloat()函数。</p>
</article>
<article>
	<header><h1>第4章 变量、作用域和内存问题</h1></header>
	<p>略</p>
</article>
<article>
	<header><h1>第5章 引用类型</h1></header>
	<p>略</p>
</article>
<article>
	<header><h1>第6章 面向对象的程序设计</h1></header>
	<p>略</p>
</article>
<article>
	<header><h1>第7章 函数表达式</h1></header>
	<p>略</p>
</article>
<article>
	<header><h1>第8章 BOM</h1></header>
	<p>略</p>
</article>
<article>
	<header><h1>第9章 客户端检测</h1></header>
	<p>略</p>
</article>
<article>
	<header><h1>第10章 DOM</h1></header>
	<p>略</p>
</article>
<article>
	<header><h1>第11章 DOM扩展</h1></header>
	<p>略</p>
</article>
<article>
	<header><h1>第12章 DOM2和DOM3</h1></header>
	<p>略</p>
</article>
<article>
	<header><h1>第13章 事件</h1></header>
	<p>略</p>
</article>
<article>
	<header><h1>第14章 表单脚本</h1></header>
	<p>略</p>
</article>
<article>
	<header><h1>第15章 使用Canvas绘图</h1></header>
	<p>略</p>
</article>
<article>
	<header><h1>第16章 HTML5脚本编程</h1></header>
	<p>略</p>
</article>
<article>
	<header><h1>第17章 错误处理与调试</h1></header>
	<p>略</p>
</article>
<article>
	<header><h1>第18章 JavaScript与XML</h1></header>
	<p>略</p>
</article>
<article>
	<header><h1>第19章 E4X</h1></header>
	<p>略</p>
</article>
<article>
	<header><h1>第20章 JSON</h1></header>
	<p>略</p>
</article>
<article>
	<header><h1>第21章 Ajax与Comet</h1></header>
	<p>略</p>
</article>
<article>
	<header><h1>第22章 高级技巧</h1></header>
	<p>略</p>
</article>
<article>
	<header><h1>第23章 离线应用与客户端存储</h1></header>
	<p>略</p>
</article>
<article>
	<header><h1>第24章 最佳实践</h1></header>
	<p>略</p>
</article>
<article>
	<header><h1>第25章 新兴的API</h1></header>
	<p>略</p>
</article>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="../js/bootstrap.min.js"></script>
</body>
</html>